// https://www.acwing.com/problem/content/871/

#include <iostream>
#include <algorithm>
using namespace std;


int arr[10086];

/**
 * 没有感情，全是技巧。
 * 对于数字 t，如果存在数字 i，满足 t % i == 0，那么称 i 是 t 的一个约数；
 * 求解 t 的约数的时候，可以采用如下技巧：如果 i 是 t 的约数，那么 (t / i) 也一定是 t 的约数
 */
int main() {
    int n, t;
    scanf("%d", &n);

    for (int i=0; i<n; i++) {
        scanf("%d", &t);
        int start = 0;
        for (int j = 1; j <= t / j; j++) {
            if (t % j == 0) {
                arr[start++] = j;
                if (t != j*j) { // 避免重复添加相同的约数，比如 16 = 4 / 4 时，仅仅添加一次即可。
                    arr[start++] = t / j;
                }
            }
        }
        sort(arr, arr+start);
        for (int j=0; j<start; j++) {
            printf("%d ", arr[j]);
        }
        printf("\n");
    }

    return 0;
}


// 感觉自己太天真了
/*
int main() {
    int n, t;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &t);
        for (int j=1; j<=t; j++) {
            if (t % j == 0) {
                printf("%d ", j);
            }
        }
        printf("\n");
    }

    return 0;
}
*/